package com.catazy.album.domain.repository

import com.catazy.album.domain.model.Album
import com.catazy.base.domain.result.Result

/**
 * 作者: Tao
 * 日期: 2024/12/23
 * 时间: 11:53
 * 描述: AlbumRepository接口定义了获取和搜索专辑信息的方法
 */
internal interface AlbumRepository {
    /**
     * 获取特定专辑的详细信息
     *
     * @param artistName 艺术家的名称，用于查询专辑信息
     * @param albumName 专辑的名称，用于查询专辑信息
     * @param mbId 可选的MusicBrain ID，用于唯一标识专辑如果提供，将用于查询
     * @return 返回一个Result对象，包含专辑信息如果查询失败，将包含错误信息
     */
    suspend fun getAlbumInfo(artistName: String, albumName: String, mbId: String?): Result<Album>

    /**
     * 根据指定的短语搜索相关的专辑
     *
     * @param phrase 可选的搜索短语，用于查找与之相关的专辑
     * @return 返回一个Result对象，包含与搜索短语相关的专辑列表如果查询失败，将包含错误信息
     */
    suspend fun searchAlbum(phrase: String?): Result<List<Album>>
}
